தரவுத்தளத்தை உருவாக்குதல்
MongoDB இல் ஒரு தரவுத்தளத்தை உருவாக்க, முதலில் ஒரு MongoClient பொருளை உருவாக்கவும், பின்னர் சரியான IP முகவரி மற்றும் நீங்கள் உருவாக்க விரும்பும் தரவுத்தளத்தின் பெயருடன் ஒரு இணைப்பு URL ஐக் குறிப்பிடவும்.
தரவுத்தளம் இல்லையென்றால், MongoDB அதை உருவாக்கி, அதற்கு இணைப்பை உருவாக்கும்.
எடுத்துக்காட்டு
"mydb" என்ற தரவுத்தளத்தை உருவாக்கவும்:
let MongoClient = require('mongodb').MongoClient;
let url = "mongodb://localhost:27017/mydb";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
console.log("Database created!");
db.close();
});
மேலே உள்ள குறியீட்டை "demo_create_mongo_db.js" என்ற கோப்பில் சேமித்து கோப்பை இயக்கவும்:
C:\Users\Your Name>node demo_create_mongo_db.js
இது உங்களுக்கு இந்த முடிவைக் கொடுக்கும்:
Database created!
முக்கியமான குறிப்பு:
MongoDB இல், உள்ளடக்கம் கிடைக்கும் வரை ஒரு தரவுத்தளம் உருவாக்கப்படாது!
தரவுத்தளத்தை உண்மையில் உருவாக்குவதற்கு முன்பு, MongoDB குறைந்தபட்சம் ஒரு ஆவணத்துடன் (பதிவு) ஒரு தொகுப்பை (அட்டவணை) உருவாக்கும் வரை காத்திருக்கும்.
நவீன இணைப்பு அணுகுமுறை
நவீன MongoClient தொடரியல்
const { MongoClient } = require('mongodb');
async function createDatabase() {
const uri = "mongodb://localhost:27017/mydb";
const client = new MongoClient(uri);
try {
await client.connect();
console.log("Connected successfully to server");
console.log("Database 'mydb' is ready to use!");
} catch (err) {
console.error("Error:", err);
} finally {
await client.close();
}
}
createDatabase();
கிளவுட் MongoDB இணைப்பு
const { MongoClient } = require('mongodb');
async function connectToCloud() {
// Replace with your MongoDB Atlas connection string
const uri = "mongodb+srv://username:password@cluster0.mongodb.net/mydb?retryWrites=true&w=majority";
const client = new MongoClient(uri);
try {
await client.connect();
console.log("Connected to MongoDB Atlas");
console.log("Database created or connected successfully");
} catch (err) {
console.error("Connection error:", err);
} finally {
await client.close();
}
}
connectToCloud();
தரவுத்தள உருவாக்க நடத்தை
தரவுத்தளம் இருந்தால்
- இணைப்பு மட்டுமே உருவாக்கப்படும்
- எந்த தரவும் மாறாது
- தரவுத்தளம் மீண்டும் உருவாக்கப்படாது
- இருக்கும் தொகுப்புகள் அணுகப்படும்
தரவுத்தளம் இல்லையென்றால்
- தரவுத்தளம் பெயர் பதிவு செய்யப்படும்
- உண்மையான உருவாக்கம் தாமதமாகும்
- முதல் ஆவணம் செருகும் வரை காத்திருக்கும்
- தானாக தொகுப்பு உருவாக்கப்படும்
உண்மையான தரவுத்தள உருவாக்கம்
const { MongoClient } = require('mongodb');
async function createDatabaseWithContent() {
const uri = "mongodb://localhost:27017/mydb";
const client = new MongoClient(uri);
try {
await client.connect();
const database = client.db("mydb");
const collection = database.collection("users");
// Insert first document - this actually creates the database
const result = await collection.insertOne({
name: "John Doe",
email: "john@example.com",
createdAt: new Date()
});
console.log("Database and collection created!");
console.log("First document inserted with id:", result.insertedId);
} catch (err) {
console.error("Error:", err);
} finally {
await client.close();
}
}
createDatabaseWithContent();
இணைப்பு URL வடிவங்கள்
| இணைப்பு வகை | URL வடிவம் | விளக்கம் |
|---|---|---|
| உள்ளூர் சேவையகம் | mongodb://localhost:27017/mydb |
இயல்புநிலை போர்ட்டுடன் உள்ளூர் சேவையகம் |
| தனிப்பயன் போர்ட்டுடன் | mongodb://localhost:27018/mydb |
தனிப்பயன் போர்ட்டுடன் உள்ளூர் சேவையகம் |
| MongoDB Atlas | mongodb+srv://user:pass@cluster.mongodb.net/mydb |
MongoDB கிளவுட் சேவை (Atlas) |
| அதிக விருப்பங்களுடன் | mongodb://host1:27017,host2:27017/mydb?replicaSet=rs0 |
கூடுதல் விருப்பங்கள் மற்றும் பல சேவையகங்கள் |
தரவுத்தள செயல்பாடுகள்
தரவுத்தளங்களைப் பட்டியலிடுதல்
const { MongoClient } = require('mongodb');
async function listDatabases() {
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);
try {
await client.connect();
const databaseList = await client.db().admin().listDatabases();
console.log("Databases:");
databaseList.databases.forEach(db => {
console.log(` - ${db.name}`);
});
} catch (err) {
console.error("Error:", err);
} finally {
await client.close();
}
}
listDatabases();
தரவுத்தள இருப்பைச் சரிபார்க்கவும்
const { MongoClient } = require('mongodb');
async function checkDatabaseExists() {
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);
const dbName = "mydb";
try {
await client.connect();
const databaseList = await client.db().admin().listDatabases();
const exists = databaseList.databases.some(db => db.name === dbName);
if (exists) {
console.log(`Database '${dbName}' exists`);
} else {
console.log(`Database '${dbName}' does not exist`);
}
} catch (err) {
console.error("Error:", err);
} finally {
await client.close();
}
}
checkDatabaseExists();
தரவுத்தள உருவாக்க சிறந்த நடைமுறைகள்
பெயரிடும் மரபுகள்
- சிறிய எழுத்துக்களைப் பயன்படுத்தவும்
- அடிக்கோடுகளைத் தவிர்க்கவும்
- விவரிக்கும் பெயர்களைப் பயன்படுத்தவும்
- திட்டத்தின் நோக்கத்தை பிரதிபலிக்கவும்
குறியீடு அமைப்பு
- இணைப்பு சரங்களை மாறிலிகளாக சேமிக்கவும்
- சரியான பிழை கையாளுதலைப் பயன்படுத்தவும்
- இணைப்புகளை சரியாக மூடவும்
- அசிங்க்ரோனஸ் செயல்பாடுகளைப் பயன்படுத்தவும்
பாதுகாப்பு
- அதிருப்தியற்ற இணைப்பு சரங்களைப் பயன்படுத்த வேண்டாம்
- சூழல் மாறிகள் மூலம் உள்நுழைவு விவரங்களைச் சேமிக்கவும்
- SSL/TLS ஐப் பயன்படுத்தவும்
- அணுகல் கட்டுப்பாடுகளை அமைக்கவும்
முழுமையான எடுத்துக்காட்டு
தரவுத்தள உருவாக்கம் மற்றும் நிர்வாகத்தின் முழுமையான எடுத்துக்காட்டு:
const { MongoClient } = require('mongodb');
class DatabaseManager {
constructor(connectionString) {
this.connectionString = connectionString;
this.client = new MongoClient(connectionString);
}
async connect() {
try {
await this.client.connect();
console.log("Connected to MongoDB server");
return true;
} catch (error) {
console.error("Connection failed:", error);
return false;
}
}
async createDatabase(dbName) {
try {
const db = this.client.db(dbName);
// Test the connection by listing collections
const collections = await db.listCollections().toArray();
console.log(`Database '${dbName}' is accessible`);
console.log(`Existing collections: ${collections.length}`);
return db;
} catch (error) {
console.error("Error accessing database:", error);
throw error;
}
}
async ensureDatabaseAndCollection(dbName, collectionName) {
try {
const db = this.client.db(dbName);
const collection = db.collection(collectionName);
// Insert a temporary document to ensure creation
const tempDoc = {
_id: "temp_creation_doc",
createdAt: new Date(),
purpose: "Database and collection creation"
};
await collection.insertOne(tempDoc);
await collection.deleteOne({ _id: "temp_creation_doc" });
console.log(`Database '${dbName}' and collection '${collectionName}' are ready`);
return { db, collection };
} catch (error) {
console.error("Error ensuring database and collection:", error);
throw error;
}
}
async close() {
try {
await this.client.close();
console.log("Connection closed");
} catch (error) {
console.error("Error closing connection:", error);
}
}
}
// Usage example
async function main() {
const connectionString = "mongodb://localhost:27017";
const dbManager = new DatabaseManager(connectionString);
try {
const connected = await dbManager.connect();
if (!connected) return;
// Create/access database
const db = await dbManager.createDatabase("myapp");
// Ensure database and collection exist
const { collection } = await dbManager.ensureDatabaseAndCollection("myapp", "users");
console.log("Database setup completed successfully!");
} catch (error) {
console.error("Main function error:", error);
} finally {
await dbManager.close();
}
}
// Run the example
main();